package com.school.entity;

	import java.util.ArrayList;
	import java.util.List;

	// 子类：学生（继承Person）
	public class Student extends Person {
	    // 子类特有属性（private：仅本类可见）
	    private List<Course> selectedCourses;

	    // 子类带参构造方法：通过super()调用父类构造
	    public Student(String studentId, String name, String gender) {
	        super(studentId, name, gender); // 必须位于子类构造方法第一行
	        this.selectedCourses = new ArrayList<>();
	        super.remark = "学生"; // 访问父类default属性（同包可访问）
	    }

	    // 子类特有方法：选课
	    public void selectCourse(Course course) {
	        selectedCourses.add(course);
	        System.out.println("学生 " + name + " 选择课程：" + course.getCourseName());
	    }

	    // 子类特有方法：退课
	    public void dropCourse(Course course) {
	        if (selectedCourses.remove(course)) {
	            System.out.println("学生 " + name + " 退选课程：" + course.getCourseName());
	        } else {
	            System.out.println("学生 " + name + " 未选该课程，无法退选！");
	        }
	    }

	    // 重写父类printInfo()方法：打印学生课表（个性化实现）
	    @Override
	    public void printInfo() {
	        super.printInfo(); // 调用父类方法打印基础信息
	        System.out.println("=== 学生课表 ===");
	        System.out.println("课程编号\t课程名称\t上课地点\t上课时间\t授课教师编号");
	        for (Course course : selectedCourses) {
	            System.out.println(course.getCourseId() + "\t" + course.getCourseName() + "\t" +
	                               course.getLocation() + "\t" + course.getTime() + "\t" +
	                               course.getTeacherId());
	        }
	    }

	    // Getter/Setter（子类特有属性）
	    public List<Course> getSelectedCourses() {
	        return selectedCourses;
	    }
	}
